Field of the Invention
The present invention relates to the field of version control and more particularly to three-way merge tools for version management.
Description of the Related Art
Version control, often referred to as revision control, source control or source code management, pertains to the management of changes to documents, programs, and other information stored as computer files. Version control is most commonly used in software development, where a team of people may apply changes to the same files. Changes applied by different persons can be coded in accordance with the identity of the person applying the change, and also a timestamp indicating when the person made the change. In this way, revisions to the file by different people can be compared, restored, and with some types of files, merged.
Version control systems are most commonly stand-alone applications, but version control also has been is also embedded in different other applications, including word processors, spreadsheets, software development environments and document management systems. Generally, by integrating version control into other applications, end users can revert a document to a previous revision, which is critical for allowing editors to track the document edits of one another and correct mistakes in documents. With respect specifically to software development, version control has been recognized as important in organizing multi-developer software development projects.
As present version control for multi-developer software development projects produces a comparison of different progeny of a primary document. The comparison can result in identified changes to the primary file in each of the progeny. Once identified, the end user can manually merge the changes at the discretion of the end user into a merge file. Generally, when two progeny result from a single primary file, the process of merging changes in each of the two progeny is referred to as a “three way merge”. In a three-way merge, to the extent that a same portion of the primary file has changed differently in different progeny, the end user can manually select which changes are incorporated for the portion in the merge file. It will be recognized, then, that the process of version control for software development is automated only to the extent that differences can be detected between documents, but otherwise the process of version control is a highly manual and quite tedious process.